1. Мост между теорией и практикой: основы загрузки данных
Модели глубокого обучения процветают на чистых, последовательных данных, но реальные наборы данных по своей природе неупорядочены. Нам нужно перейти от готовых бенчмарков (например, MNIST) к управлению неструктурированными источниками, где сама загрузка данных — это сложная задача по координации. Основой этого процесса являются специализированные инструменты PyTorch для управления данными.
Основная проблема заключается в преобразовании сырых, разрозненных данных (изображений, текста, аудиофайлов), хранящихся на диске, в хорошо структурированный, стандартизированный формат формат тензоров, ожидаемый графическим процессором. Для этого требуется пользовательская логика для индексирования, загрузки, предварительной обработки и, наконец, батчинга.
Ключевые проблемы при работе с реальными данными
- Хаос данных: Данные разбросаны по нескольким каталогам, часто индексируются только файлами CSV.
- Требуется предобработка: Изображения могут требовать изменения размера, нормализации или аугментации перед конвертацией в тензоры.
- Цель повышения эффективности: Данные должны поступать на графический процессор в оптимизированных, неблокирующих пакетах, чтобы максимально ускорить обучение.
Dataset отвечает за «что» (как получить один образец и метку), в то время как класс DataLoader отвечает за «как» (эффективный батчинг, перемешивание и многопоточная доставка).Запустите код, чтобы просмотреть активные тензоры
Dataset?DataLoaderвключает параллельную загрузку данных с использованием нескольких ядер ЦП?CustomDataset для 10 000 изображений, проиндексированных одним файлом CSV, содержащим пути и метки.
Метод
__len__ класса Dataset.Концепция: определяет размер эпохи.
__getitem__(self, index)?1. Найти путь к файлу с помощью
index.2. Загрузить исходные данные (например, изображение).
3. Применить необходимые
преобразования.4. Вернуть обработанный тензор и метку.